from pyDes import *  # *表示引用所有函数
import binascii

# DES 加密函数
def des_encrypt(s, KEY):
    secret_key = KEY  # 设置密钥
    iv = secret_key   # 使用密钥作为初始化向量
    k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)  # 创建DES加密对象，CBC模式，使用PKCS5填充
    en = k.encrypt(s, padmode=PAD_PKCS5)  # 加密数据
    return binascii.b2a_hex(en).decode()  # 将加密后的二进制数据转换为十六进制字符串并返回

# DES 解密函数
def des_descrypt(s, KEY):
    secret_key = KEY  # 设置密钥
    iv = secret_key   # 使用密钥作为初始化向量
    k = des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)  # 创建DES解密对象，CBC模式，使用PKCS5填充
    de = k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)  # 将十六进制字符串转换为二进制后解密
    return de.decode()  # 解密后返回字符串形式的明文

# 测试代码
if __name__ == "__main__":
    ciphertext = des_encrypt("hello, world!", "12345678")  # 对明文"hello, world!"使用密钥"12345678"进行加密
    print("密文：", ciphertext)  # 打印加密后的密文
    plaintext = des_descrypt(ciphertext, "12345678")  # 使用相同的密钥对密文进行解密
    print("解密后的明文：", plaintext)  # 打印解密后的明文